const express = require('express')
const router = express.Router()
const Manager = require('../models').Manager
const md5 = require('blueimp-md5')

router.post('/managers/login', (req, res, next) => {
  const body = req.body
  if (body.captcha.toLowerCase() !== req.session.captcha.toLowerCase()) {
    return res.json({
      success: false,
      err_code: 400,
      err_message: '验证码错误'
    })
  }
    // 查找该用户
  Manager.findOne({
      username: body.username
    })
    .then(doc => {
      if (!doc) {
        return res.json({
          success: false,
          err_code: 403,
          err_message: '没有权限'
        })
      }
      if (md5(body.password + 'itcast') !== doc.password) {
        return res.json({
          success: false,
          err_code: 403,
          err_message: '没有权限'
        })
      }

      // 登陆成功，通过 Session 记录登陆状态
      // 注意：这里是把 Session 数据持久化到数据库中了
      req.session.manager = doc
      res.json({
        success: true,
        ret: {}
      })
    })
    .catch(err => {
      next(err)
    })
})

// 该接口比较特殊
// 需要接收一个特殊的参数：
//     req.session 需要接收一个 cookie：connect.sid
//     1. 当你登陆成功的时候，请求了 /api/managers/login
//        3000端口中的 /api/managers/login 接口给你响应了一个 Cookie 钥匙：connect.sid 以及登陆成功的消息
//     2. 在 5080 这个UI渲染层上想要对 3000 端口中的 /api/managers/checklogin 发起一个和 Session 校验相关的处理
//        由于钥匙在 5080 这里，而数据在 3000 那儿
//        所以这个时候发起这个请求的时候，你在后台主动发的请求就需要传一个特殊的参数：
//          Cookies: 5080 客户端请求过来的数据
router.get('/managers/checklogin', (req, res, next) => {
  console.log(req.headers)
  if (!req.session.manager) {
    return res.json({
      success: false,
      err_code: 403,
      err_message: '没有登陆权限'
    })
  }
  res.json({
    success: true,
    ret: {}
  })
})

router.post('/managers', (req, res, next) => {
  const body = req.body
  const manager = new Manager({
    username: body.username,
    password: md5(body.password + 'itcast'),
    type: body.type
  })
  manager.save()
    .then(() => {
      res.json({
        success: true,
        ret: {}
      })
    })
    .catch(err => {
      next(err)
    })
})

module.exports = router
